package com.peng.commonlibrary.allkindsoflist.expandablelist;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.github.jdsjlzx.recyclerview.LRecyclerView;
import com.peng.commonlibrary.R;

import java.util.ArrayList;

/**
 * Created by M_genius on 2018/1/31 10:09.
 * 描述：
 *  1、可拓展列表的示例 Adapter
 */

public class ExpandSampleAdapter extends ExpandableRecyclerAdapter<ExpandSampleItem> {

    // 子Item标记，在对象的构造函数中确定
    public static final int TYPE_ITEM = 1001;

    private LRecyclerView recyclerView;

    public ExpandSampleAdapter(Context context, LRecyclerView recyclerView) {
        super(context);
        this.recyclerView = recyclerView;
    }

    /**
     * 组 Item 的 ViewHolder，绑定组 View 的控件
     */
    public class SampleGroupViewHolder extends GroupViewHolder {
        TextView tvName;

        // 父类构造方法的第二个参数为 箭头
        public SampleGroupViewHolder(View view, LRecyclerView recyclerView) {
            super(view, (ImageView) view.findViewById(R.id.item_arrow), recyclerView);

            tvName = (TextView) view.findViewById(R.id.title);
        }

        public void bind(int position) {
            super.bind(position);

            tvName.setText(visibleItems.get(position).Text);
            tvName.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                }
            });
        }
    }


    /**
     * 子 Item 的 ViewHolder，绑定子 View 的控件
     */
    public class SampleChildViewHolder extends ExpandableRecyclerAdapter.ViewHolder {
        TextView tvContent;

        public SampleChildViewHolder(View view) {
            super(view);
            view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //在此处为子view设置点击事件
                    Toast.makeText(mContext, "点击", Toast.LENGTH_SHORT).show();
                }
            });
            tvContent = (TextView) view.findViewById(R.id.tv_content);
        }

        public void bind(int position) {
            tvContent.setText(visibleItems.get(position).Text);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case TYPE_HEADER:
                //header 中的箭头默认隐藏，如有需要，item_arrow 设置为visible即可
                return new SampleGroupViewHolder(inflate(R.layout.item_group_common, parent), recyclerView);
            case TYPE_ITEM:
            default:
                return new SampleChildViewHolder(inflate(R.layout.item_child_common, parent));
        }
    }

    @Override
    public void onBindViewHolder(ExpandableRecyclerAdapter.ViewHolder holder, final int position) {
        switch (getItemViewType(position)) {
            case TYPE_HEADER:
                ((SampleGroupViewHolder) holder).bind(position);
                break;
            case TYPE_ITEM:
            default:
                ((SampleChildViewHolder) holder).bind(position);
                break;
        }
    }

    public ArrayList<ExpandSampleItem> getSampleItems() {
        ArrayList<ExpandSampleItem> items = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            items.add(new ExpandSampleItem("Friends"));
            items.add(new ExpandSampleItem("有心课堂的创始人...", "Stay"));
            items.add(new ExpandSampleItem("听说他自定义view本事强", "谷歌的小弟"));
            items.add(new ExpandSampleItem("听说他优化性能本事强", "Star"));
            items.add(new ExpandSampleItem("踏实、谦虚、勤奋、上进...", "will"));
        }

        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Smith"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Doe"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Hall"));

        items.add(new ExpandSampleItem("Associates"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Jones"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Smith"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Hall"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Lake"));
        items.add(new ExpandSampleItem("Colleagues"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Jones"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Smith"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Hall"));
        items.add(new ExpandSampleItem("Có thể thoải mái mở rộng 1 class, nhưng không được sửa đổi bên trong class đó \n" +
                "(open for extension but closed for modification)", "Lake"));

        return items;
    }
}
